package com.ibeeking.gmc.global.g.rest.service;


import com.ibeeking.found.common.entity.DatabaseTemplateDTO;
import com.ibeeking.found.common.entity.IndustryFrontendDTO;
import com.ibeeking.gmc.global.service.common.bo.DatabaseTemplateBO;
import com.ibeeking.gmc.global.service.common.param.DatabaseTemplateParam;
import com.ibeeking.gmc.global.service.common.param.IndustryFrontendParam;
import com.ibeeking.gmc.global.service.common.query.DatabaseTemplatePageQuery;
import com.ibeeking.gmc.global.service.common.query.DatabaseTemplateQuery;
import com.ibeeking.gmc.global.service.common.vo.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;


/**
 * IDatabaseTemplateService
 *
 * @Author ibeeking
 * @Date 2021-03-02 09:07
 */
public interface IDatabaseTemplateService {

    /***
     * 分页查询
     */
    Page<DatabaseTemplatePageVO> pageList(DatabaseTemplatePageQuery query);

    /***
     * 新增
     */
    Boolean add(DatabaseTemplateParam databaseTemplateParam);

    /***
     * 修改
     */
    Boolean modify(DatabaseTemplateParam databaseTemplateParam);

    /***
     * 从其他行业复制
     */
    Boolean copyFromIndustry(String fromIndustry, String toIndustry);

    /***
     * 清除行业所有数据库模板
     */
    Boolean clearTemplateDatabase(String industry);
    /***
     * 修改数据源
     */
    Boolean changeDataConfig(String industry, Long dbConfigId);

    /***
     * 通过id查询
     */
    DatabaseTemplateVO view(Long id);

    DatabaseTemplateBO queryById(Long id);

    List<IndustryFrontendDTO> quertIndustryFrontend(String industry, String frontend);


    IndustryFrontendVO viewIndustryFrontendVisible(String industry);

    Boolean modifyAndAddIndustryFrontend(IndustryFrontendParam param);
    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status);

    /***
     * 通过id删除
     */
    Boolean del(Long id);

    List<DatabaseTemplateVO> list(DatabaseTemplateQuery query);

    Boolean hasChild(Long parentId);

    List<DatabaseTemplateDTO> listByIndustry(String industry);

    List<DatabaseTemplateBO> queryByIndustry(String industry);

    List<DatabaseTemplateBO> queryByApplicationNames(String industry, List<String> applications);

    List<DatabaseTemplateBO> queryByIds(List<Long> ids);

    List<DatabaseTemplateIndustryTreeVO> queryTemplateDatabaseIndustryTreeList();

    List<IndustryFrontendTreeVO> queryIndustryFrontendTreeList(String industry);

    List<DatabaseTemplateIndustryVO> templateDatabaseIndustry();

    List<FrontendTypeVO> frontEndType();

    List<ApplicationVO> application();

    List<ApplicationVO> usableApplication(String industry);
}
